﻿using System;
using System.Windows.Forms;
using SoftwareConsulting.BI11.Studio.InternalServices;
using SoftwareConsulting.BI11.Studio.UI.Properties;

namespace SoftwareConsulting.BI11.Studio.UI.ProjectExplorer
{
    /// <summary>
    /// Класс диалога создания нового проекта
    /// </summary>
    public partial class ProjectCreatingDialog : RestorableForm
    {
        #region внутренние поля
        private string _name;
        private string _path;
        #endregion

        #region публичные свойства
        public string ProjectName
        {
            get
            {
                return _name;
            }
            set
            {
                _name = value;
            }
        }

        public string Path
        {
            get
            {
                return _path;
            }
            set
            {
                _path = value;
            }
        }
        #endregion

        #region внутренние методы
        /// <summary>
        /// Отображение диалога выбора пути
        /// </summary>
        private void SelectPath()
        {
            folderBrowserDialog1.RootFolder = System.Environment.SpecialFolder.MyDocuments;
            folderBrowserDialog1.Description = Resources.BI_PROJECTEXPLORER_PROJECTCREATING_PATH_CAPTION;
            DialogResult d = folderBrowserDialog1.ShowDialog();
            if (d == DialogResult.OK)
            {
                ProjectPathTextBox.Text = folderBrowserDialog1.SelectedPath;
            }
        }

        /// <summary>
        /// Применение параметров проекта и закрытие формы
        /// </summary>
        private void ApplyAndClose()
        {
            ValidateChildren();
            if (string.IsNullOrEmpty(errorProvider1.GetError(ProjectNameTextBox)))
            {
                ProjectName = ProjectNameTextBox.Text;
                Path = ProjectPathTextBox.Text;
                DialogResult = DialogResult.OK;
            }
            else
            {
                DialogResult = DialogResult.None;
            }
        }

        /// <summary>
        /// Обработка клика по кнопке выбора пути
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void SelectPathButton_Click(object sender, EventArgs e)
        {
            SelectPath();
        }              

        /// <summary>
        /// Обработка клика по кнопке ОК
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void OKButton_Click(object sender, EventArgs e)
        {
            ApplyAndClose();
        }

        /// <summary>
        /// Проверка корректности введенного имени проекта
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ProjectName_Validated(object sender, EventArgs e)
        {
            string s = string.Empty;
            try
            {
                ProjectNameTextBox.Text = GeneralMethods.TrimName(ProjectNameTextBox.Text);
            }
            catch (BIIncorrectNameException ex)
            {
                s = ex.Message;
            }
            errorProvider1.SetError(ProjectNameTextBox, s);
        }
        #endregion

        #region конструкторы и финализаторы
        /// <summary>
        /// Инициализация компонентов формы
        /// </summary>
        public ProjectCreatingDialog(string name, string path)
        {
            InitializeComponent();
            ProjectPathTextBox.Text = path;
            ProjectNameTextBox.Text = name;
        }
        #endregion                                 
    }
}
